import Vue from 'vue'
import Vuex from 'vuex'
import getters from './getters'
import app from './modules/app'
import settings from './modules/settings'
import user from './modules/user'

Vue.use(Vuex)

// 在导出的实例中，有两个核心方法：getters 和 modules
// store是唯一一个数据仓库管家
// 复习知识点1、store里面包含5大核心配置项（概念）
// state->定义变量
// mutations ->定义方法（形参1是state，唯一可以修改state值的地方）
// actions ->定义法昂发（形参1是store异步操作修改state但是也要提交到mutations）
// getters ->vuex里甲酸属性 ->计算返回值
// modules ->集中管理太多可以分割多个模块分别管理（但是最后都要挂载到根store上）

// 知识点2：每个modules 对象里还是包含5个核心概念，还能继续嵌套管理
// 知识点3：vuex里的东西如何在vue组件页面/js文件里使用
// 1、根store里的（不分模块的时候）
// 直接使用
// 映射使用
// 2、分模块（不开命名空间）
// 之影响state取值方式
// mutations和actions和getters还想以前一样使用
// 3、分模块（开命名空间）
// 使用时带模块名（命名空间名）
const store = new Vuex.Store({
  modules: { // vuex分模块 key模块名 value模块对象
    app, // 侧边栏对象 设备型号
    settings, // 侧边栏是否有logo
    user //
  },
  getters
  // 根上的（方便逻辑页面直接访问，getters内部帮我区映射每个模块里state）
})

export default store
